/** * @license * SPDX-License-Identifier: Apache-2.0 */ import React, { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Phone, MapPin, Instagram, Facebook, ArrowRight, Menu as MenuIcon, X, Clock, Sparkles, Check, Calendar, Users, Utensils, ChevronRight, ChevronDown, Info } from 'lucide-react'; import FullscreenMenuPage from './components/FullscreenMenuPage'; import CinematicBackground from './components/CinematicBackground'; interface MenuItem { id: string; title: string; price: number; originalPriceNum: number; priceString: string; img: string; desc: string; category: 'platters' | 'steaks' | 'specialties'; spiceOptions: string[]; } interface QuickBooking { id: string; name: string; phone: string; date: string; timeSlot: string; guests: number; sittingArea: string; specialRequest?: string; createdAt: string; } export default function App() { const [isLoaded, setIsLoaded] = useState(false); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [isBookingOpen, setIsBookingOpen] = useState(false); const [isFullScreenMenuOpen, setIsFullScreenMenuOpen] = useState(false); // Menu items interactive state const [selectedCategory, setSelectedCategory] = useState<'all' | 'platters' | 'steaks' | 'specialties'>('all'); const [selectedSpiceLevels, setSelectedSpiceLevels] = useState>({ 't-bone': 'Traditional Spice', 'mixed-grill': 'Medium Smoked', 'special-rice': 'Traditional Spice' }); // Custom interactive cart/platter calculator const [cart, setCart] = useState>([]); const [bookingList, setBookingList] = useState([]); // Form Reservation State const [bookingForm, setBookingForm] = useState({ name: '', phone: '', date: new Date().toISOString().split('T')[0], timeSlot: '07:00 PM', guests: 4, sittingArea: 'Sky View Deck', specialRequest: '' }); const [bookingSuccess, setBookingSuccess] = useState(false); // Menu details const menuItems: MenuItem[] = [ { id: 't-bone', category: 'steaks', title: "T-Bone Steak", price: 1850, originalPriceNum: 1850, priceString: "৳ 1,850", img: "https://images.unsplash.com/photo-1544025162-d76694265947?auto=format&fit=crop&q=80&w=1000", desc: "Premium slow-aged cut served sizzled with rich artisanal pasta, roasted garlic bulbs, & pan-sautéed seasonal heritage greens.", spiceOptions: ["Mild Butter Herb", "Medium Smoked", "Spicy Charcoal Burn"] }, { id: 'mixed-grill', category: 'platters', title: "Mixed Grill Platter", price: 2400, originalPriceNum: 2400, priceString: "৳ 2,400", img: "https://images.unsplash.com/photo-1529193591184-b1d58069ecdd?auto=format&fit=crop&q=80&w=1000", desc: "The ultimate sharing experience: slow-charred Seekh kababs, succulent Boti skewers, and signature grilled premium chops with dip.", spiceOptions: ["Traditional Spice", "Medium Heat", "Extreme Gunpowder"] }, { id: 'special-rice', category: 'specialties', title: "Horais Special Rice", price: 850, originalPriceNum: 850, priceString: "৳ 850", img: "https://images.unsplash.com/photo-1563379091339-03b21ab4a4f8?auto=format&fit=crop&q=80&w=1000", desc: "Aromatic basmati rice layered with royal saffron blends, premium ghee, caramelized spring shallots, and toasted nuts.", spiceOptions: ["Traditional Spice", "Mild Saffron Infusion"] }, { id: 'tengri-trio', category: 'platters', title: "Elite Tengri Platter", price: 1550, originalPriceNum: 1550, priceString: "৳ 1,550", img: "https://images.unsplash.com/photo-1599487488170-d11ec9c172f0?auto=format&fit=crop&q=80&w=1600", desc: "Fresh, juicy drumsticks marinated overnight in thick Greek yogurt and a secret rich Mughal 15-spice blend, char-grilled to gold.", spiceOptions: ["Creamy Garlic", "Mughal Spicy", "Dhaka Blast"] } ]; useEffect(() => { // Cinematic Loader Timer const timer = setTimeout(() => { setIsLoaded(true); }, 2200); // Hydrate existing bookings from localStorage if available try { const saved = localStorage.getItem('horais_dine_bookings'); if (saved) { setBookingList(JSON.parse(saved)); } } catch (e) { console.error("Local storage error:", e); } return () => clearTimeout(timer); }, []); const handleBookingSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!bookingForm.name || !bookingForm.phone) return; const newBooking: QuickBooking = { id: Math.random().toString(36).substring(2, 9), name: bookingForm.name, phone: bookingForm.phone, date: bookingForm.date, timeSlot: bookingForm.timeSlot, guests: bookingForm.guests, sittingArea: bookingForm.sittingArea, specialRequest: bookingForm.specialRequest, createdAt: new Date().toLocaleTimeString() }; const updatedList = [newBooking, ...bookingList]; setBookingList(updatedList); localStorage.setItem('horais_dine_bookings', JSON.stringify(updatedList)); setBookingSuccess(true); setTimeout(() => { setBookingSuccess(false); setIsBookingOpen(false); // Reset name/phone setBookingForm(prev => ({ ...prev, name: '', phone: '', specialRequest: '' })); }, 2800); }; const deleteBooking = (id: string, e: React.MouseEvent) => { e.stopPropagation(); const updated = bookingList.filter(b => b.id !== id); setBookingList(updated); localStorage.setItem('horais_dine_bookings', JSON.stringify(updated)); }; // Add Item to Plate Order const addToCart = (item: MenuItem) => { const spice = selectedSpiceLevels[item.id] || item.spiceOptions[0] || 'Default'; setCart(prev => { const existing = prev.find(i => i.item.id === item.id && i.selectedSpice === spice); if (existing) { return prev.map(i => i.item.id === item.id && i.selectedSpice === spice ? { ...i, quantity: i.quantity + 1 } : i ); } return [...prev, { item, quantity: 1, selectedSpice: spice }]; }); }; const removeFromCart = (itemId: string, spice: string) => { setCart(prev => prev.filter(i => !(i.item.id === itemId && i.selectedSpice === spice))); }; const cartTotal = cart.reduce((total, entry) => total + (entry.item.price * entry.quantity), 0); const vatAmount = cartTotal * 0.05; // 5% VAT const grandTotal = cartTotal + vatAmount; // Filter items const filteredItems = selectedCategory === 'all' ? menuItems : menuItems.filter(item => item.category === selectedCategory); return (
{/* GLOBAL CINEMATIC BACKDROP */} {/* 1. CINEMATIC LOADER */} {!isLoaded && (

HORAIS DINE

Luxury on Top
)} {/* 2. STICKY NAVBAR */}
window.scrollTo({ top: 0, behavior: 'smooth' })}> HORAIS DINE Luxury on Top
{/* Desktop Navigation */} {/* Table Reservation and Hamburger Control */}
{/* Mobile menu trigger */}
{/* MOBILE NAV DRAWER */} {mobileMenuOpen && (
HORAIS DINE LUXURY ON TOP
Reserving Rooftop Floor 8, Banasree
)}
{/* 3. HERO SECTION */}
{/* Background Zoom / Fade in Overlay */}
{/* Deep black cinematic overlay */}
{/* Warm golden spotlight flare effect */}
Cinematic Kababs On Charcoal Grill
8th Floor Rooftop Banasree Taste the Magic Elevated luxury Dining Experiences in the Heart of Dhaka • Dhaka's Ultimate Skyline Kitchen Explore Menu
{/* Scroll down indicator */} { document.getElementById('menu')?.scrollIntoView({ behavior: 'smooth' }); }} > Scroll to Explore
{/* 3.1 ROOFTOP SKY-EXPERIENCE SECTION (ABOUT) */}
{/* Soft blurred glow accents specifically for About Section */}
{/* Visual Frame - Luxury fine dining view */}
Horais Dine Luxury Skyline View
THE SKY CANOPY

Banasree’s Premier Skyline Sanctuary

{/* Content side */} OUR ROOFTOP SPACE

An Elevated Haven of Charcoal & Sky

Perched gracefully on the eighth floor, Horais Dine redefines metropolitan luxury by uniting original Mughal wood-fired grilling with majestic high-altitude glasshouse designs. Every sizzle represents hours of marination and generations of secret heritage recipes.

Join us for exclusive dining under the skylights or open-air sky view decks. We provide high-end, eye-safe low light settings and premium seating cabins perfect for romantic anniversaries or royal business reservations.

8th Rooftop Floor
15+ Mughal Spices
100% Pure Ghee Marinated
{/* 4. FEATURED MENU / PROMO */} {/* 5.1 PRESTIGE REVIEWS (TESTIMONIALS SECTION) */}
{/* Soft premium glow specifically for Testimonials Section */}
PRESTIGE GUEST JOURNAL

Voices of Sovereignty

REAL INSIGHTS FROM DHAKA’S FINE DINING PATRONS

{[ { quote: "The seared T-Bone is a revelation of flavour, with perfect oak wood smoke undertones. The 8th-floor skyline is absolute poetry.", author: "Nafisa Kamal", title: "Culinary Editor", stars: 5 }, { quote: "Never felt such care in kabab preparation. The ghee marination on the Elite Tengri Platter melts in your mouth. High modern luxury at its finest.", author: "Zarif Rahman", title: "Prestige Member", stars: 5 }, { quote: "A sublime fusion of Mughal history and scenic modern glasshouse cabin design. Excellent eye-safe golden ambient lighting style.", author: "Tanvir Ahmed", title: "Rooftop Critic", stars: 5 } ].map((entry, idx) => ( {/* Glowing border decor */}
{/* Gold Stars */}
{Array.from({ length: entry.stars }).map((_, i) => ( ))}

"{entry.quote}"

{entry.author} {entry.title}
))}
{/* FLOATING CART AND PLATE SUMMARY */} {cart.length > 0 && (
Your Platter Order
{cart.map((entry, index) => (
{entry.item.title}
🌶️ {entry.selectedSpice}
x{entry.quantity} ৳ {(entry.item.price * entry.quantity).toLocaleString()}
))}
Subtotal ৳ {cartTotal.toLocaleString()}
VAT (5%) ৳ {vatAmount.toLocaleString()}
Total Bill (Estimate) ৳ {grandTotal.toLocaleString()}
)} {/* RESERVATIONS STATE VIEWER */} {bookingList.length > 0 && (
Self-Service Portal

Your Live Sky-Cabins Reservation

Manage your current active rooftop bookings locally.

{bookingList.map((booking) => (
{booking.name} {booking.sittingArea}
{booking.date} {booking.timeSlot} {booking.guests} Guests
{booking.specialRequest && (
"{booking.specialRequest}"
)}
ID: #{booking.id.toUpperCase()} Confirmed
))}
)} {/* 6. CONTACT & FOOTER */}
{/* Abstract Backdrop Logo */}
HORAIS

Horais Dine

"Luxury on Top" — A culinary sanctuary where traditional Mughal spices and robust charcoal flame meet high modern sophistication, hosted gracefully on the 8th floor of Banasree.

Operating Hours:

Daily: 12:00 PM – 11:30 PM (Kitchen closes 11:00 PM)

Contact & Reservations
01898-934170

House 7 (8th Floor), Road 12, Main Road,
Beside South Banasree Central Jame Masjid,
Khilgaon, Dhaka, Bangladesh

Social Connections

Follow our official accounts for Chef specials, dining events, and views of Banasree from the top.

© 2024–2026 Horais Dine. All Prices exclusive of 5% VAT.

Elevated Rooftop Culinary Sanctuary • Dhaka

{/* 7. CUSTOM TABLE BOOKING DRAWER MODAL */} {isBookingOpen && (